*  Topic:           Replication Materials for Park and Jeung "Stirring the Populist Tide: Campaign Rhetoric and Electoral Choices in the 2022 Korean Presidential Election" 
*  File-Name:       0_analysis_codes.do 
*  Data-file:       0_populism_wave1-3_merge.dta                     
*  Date:            Dec 2025


* Please change the directory for your setting. 
cd "Replication_Materials"

*==============================================================================
* Manuscript 
*==============================================================================
*==============================================================================
* Figure 1 Hawkins' Populism Scores for Yoon and Lee
*==============================================================================
use 2_data_speech

graph twoway (scatter hawkins_yoon date_my, mcolor(red) ) (lfit hawkins_yoon date_my, lcolor(red) )  (scatter hawkins_lee date_my, msymbol(S) mcolor(blue))  (lfit hawkins_lee date_my, lcolor(blue)), legend(label (1 "Yoon")  label (3 "Lee") ) ///
xtitle("") ytitle("Hawkins Score")  graphregion(color(white)) bgcolor(white) xlabel(1 "Feb 15" 5 "Feb 19" 10 "Feb 24" 15 "March 1" 20 "March 6" ) saving(fg1_scatter_4coders)

graph twoway (scatter hawkins_yoon_3 date_my, mcolor(red)) (lfit hawkins_yoon_3 date_my, lcolor(red))  (scatter hawkins_lee_3 date_my, msymbol(S) mcolor(blue))  (lfit hawkins_lee_3 date_my, lcolor(blue)), legend(label (1 "Yoon")  label (3 "Lee") ) ///
xtitle("") ytitle("Hawkins Score")  graphregion(color(white)) bgcolor(white) xlabel(1 "Feb 15" 5 "Feb 19" 10 "Feb 24" 15 "March 1" 20 "March 6" ) saving(fg2_scatter_3coders)

graph combine yongnam.gph honam.gph metro.gph chung_etc.gph, ycommon graphregion(color(white)) 

clear

*==============================================================================
* Table 1 Items Measuring Populist Attitudes
*==============================================================================
use 1_data_survey

quietly estpost summarize q104-q113
esttab ., cells("count mean(fmt(3)) sd(fmt(3))") label nonumber noobs


*==============================================================================
* Figure 2 
*==============================================================================
ciplot populism10_irt, by(vote_4_pre) horizontal ytitle("Vote Intention") xtitle("Populist Attitude (IRT)")  graphregion(color(white)) bgcolor(white) ylabel(2 "Lee" 5 "Yoon" 8 "Sim" 11 "Others" ) 

*==============================================================================
* Table 2 
*==============================================================================
* Models 1 and 2
foreach y of var vote_yoon_w1 vote_lee_w1  {
local cv1 " q203  dem_satis_w1_re support_kukhim support_etc support_no ideology_w1 pledge_w1 q24 pol_interest_w1 q195 education male age_2 age_3 age_4 age_5   p_gyonggi p_chungchung p_jeonlla p_geongnam p_geongbuk p_gangwonjeju   " 

logit `y' populism10_irt  `cv1' , cluster(q5)
eststo 
}


* Models 3 and 4
foreach y of var vote_yoon_w3 vote_lee_w3  {
local cv2 "q203 dem_satis_w3_re support_kukhim_w3_re support_etc_w3_re support_no_w3_re ideology_w3 pledge_w3  w3_q109 pol_interest_w3 q195 education male age_2 age_3 age_4 age_5 p_gyonggi p_chungchung p_jeonlla p_geongnam p_geongbuk p_gangwonjeju " 

logit `y' populism10_irt   `cv2'  , cluster(q5)
eststo 
}

esttab , b(%12.3fc) se scalars("ll Log lik." ) pr2 nogap label star(* 0.05 ** 0.01 *** 0.001)



*==============================================================================
* Table 3 Moderating Effects of Economic and Political Conditions (Reduced Form)
*==============================================================================
eststo clear
foreach y of var vote_yoon_w3 vote_lee_w3  {
local cv2 "support_kukhim_w3_re support_etc_w3_re support_no_w3_re ideology_w3 pledge_w3  w3_q109 pol_interest_w3 q195 education male age_2 age_3 age_4 age_5 p_gyonggi p_chungchung p_jeonlla p_geongnam p_geongbuk p_gangwonjeju  " 

logit `y' c.populism10_irt##c.q203 c.dem_satis_w3_re##c.populism10_irt   `cv2' ,  cluster(q5)
eststo 
}

esttab , drop(support_kukhim_w3_re support_etc_w3_re support_no_w3_re ideology_w3 pledge_w3  w3_q109 pol_interest_w3 q195 education male age_2 age_3 age_4 age_5 p_gyonggi p_chungchung p_jeonlla p_geongnam p_geongbuk p_gangwonjeju) noomit b(%12.3fc) se scalars("ll Log lik." ) pr2 nogap label star(+ 0.1 * 0.05 ** 0.01 *** 0.001)


*==============================================================================
* Prepare to make Figures 3 and 4 
*==============================================================================
* Vote for Yoon
local cv2 "support_kukhim_w3_re support_etc_w3_re support_no_w3_re ideology_w3 pledge_w3  w3_q109 pol_interest_w3 q195 education male age_2 age_3 age_4 age_5 p_gyonggi p_chungchung p_jeonlla p_geongnam p_geongbuk p_gangwonjeju " 
quietly logit vote_yoon_w3 c.q203##c.populism10_irt c.dem_satis_w3_re##c.populism10_irt   `cv2'  ,  cluster(q5)

margins, dydx(populism10_irt) at(q203=(1(1)5)) vsquish
marginsplot, yline(0) plotregion(fcolor(white)) graphregion(fcolor(white)) ytitle("Marginal Effects") xtitle("Loss from Housing Market") title("Vote For Yoon") xlabel(1 "Huge Profit" 2 "Profit" 3 "No Influence" 4 "Loss" 5 "Huge Loss") saving(fg_int_yoon_housing_RR.gph)


margins, dydx(populism10_irt) at(dem_satis_w3=(1(1)11)) vsquish
marginsplot, yline(0) plotregion(fcolor(white)) graphregion(fcolor(white)) ytitle("Marginal Effects") xtitle("Dissatisfaction on Democracy") title("Vote For Yoon ") xlabel(1 "Very Satisfied" 6 "Neutral" 10 "Very Dissatisfied") saving(fg_int_yoon_dem_satis_RR.gph)


* Vote for Lee
local cv2 "dem_satis_w3_re q203 support_kukhim_w3_re support_etc_w3_re support_no_w3_re ideology_w3 pledge_w3  w3_q109 pol_interest_w3 q195 education male age_2 age_3 age_4 age_5 p_gyonggi p_chungchung p_jeonlla p_geongnam p_geongbuk p_gangwonjeju " 
quietly logit vote_lee_w3 c.q203##c.populism10_irt c.dem_satis_w3_re##c.populism10_irt `cv2' ,  cluster(q5)


margins, dydx(populism10_irt) at(dem_satis_w3=(1(1)11)) vsquish
marginsplot, yline(0) plotregion(fcolor(white)) graphregion(fcolor(white)) ytitle("Marginal Effects") xtitle("Dissatisfaction on Democracy") title("Vote For Lee ") xlabel(1 "Very Satisfied" 6 "Neutral" 10 "Very Dissatisfied") saving(fg_int_lee_dem_satis_RR.gph)

margins, dydx(populism10_irt) at(q203=(1(1)5)) vsquish
marginsplot, yline(0) plotregion(fcolor(white)) graphregion(fcolor(white)) ytitle("Marginal Effects") xtitle("Loss from Housing Market") title("Vote For Lee ") xlabel(1 "Huge Profit" 2 "Profit" 3 "No Influence" 4 "Loss" 5 "Huge Loss") saving(fg_int_lee_housing_RR.gph)


*==============================================================================
* Figure 3 Marginal Effects of Housing Market Loss on Vote Choice
*==============================================================================
graph combine fg_int_yoon_housing_RR.gph fg_int_lee_housing_RR.gph ,  ycommon plotregion(fcolor(white)) graphregion(fcolor(white)) 


*==============================================================================
* Figure 4 Marginal Effects of Dissatisfaction with Democracy on Vote Choice
*==============================================================================
graph combine fg_int_yoon_dem_satis_RR.gph fg_int_lee_dem_satis_RR.gph ,  ycommon plotregion(fcolor(white)) graphregion(fcolor(white)) 

clear



*==============================================================================
* Appendix 
*==============================================================================
*==============================================================================
* Appendix Table A2 Four Coders' Grading Averages
*==============================================================================
use 2_data_speech 

* Lee's Speech
quietly estpost summarize hawkins_populism_y hawkins_populism_p hawkins_populism_b hawkins_populism_j  if lee==1
esttab ., cells("count mean(fmt(3)) sd(fmt(3))") label nonumber noobs

* Yoon's Speech
quietly estpost summarize hawkins_populism_y hawkins_populism_p hawkins_populism_b  hawkins_populism_j  if yoon==1
esttab ., cells("count mean(fmt(3)) sd(fmt(3))") label nonumber noobs

*==============================================================================
* Appendix Table A3 Summary Statistics
*==============================================================================
use 1_data_survey 


* Pre-Election Survey
eststo clear
quietly estpost summarize vote_yoon_w1 vote_lee_w1  populism10_irt dem_satis_w1_re q203 support_minjoo support_kukhim support_etc support_no ideology_w1 pledge_w1 q24 pol_interest_w1 q195 education male age_2 age_3 age_4 age_5 p_gyonggi p_chungchung p_jeonlla p_geongnam p_geongbuk p_gangwonjeju 
esttab ., cells("count mean(fmt(3)) sd(fmt(3)) min(fmt(3)) max(fmt(3))") label nonumber noobs


* Post-Election Survey 
quietly estpost summarize  vote_yoon_w3 vote_lee_w3 q203 dem_satis_w3_re support_minjoo_w3_re support_kukhim_w3_re support_etc_w3_re support_no_w3_re ideology_w3 pledge_w3  w3_q109 pol_interest_w3 
esttab ., cells("count mean(fmt(3)) sd(fmt(3)) min(fmt(3)) max(fmt(3))") label nonumber noobs



*==============================================================================
* Appendix Figure A1 Binscatter Plot of Political Ideology and Populist Attitudes
*==============================================================================
binscatter populism10_irt ideology_w1,  xtitle("Ideology") ytitle("Populist Attitude (IRT)")  graphregion(color(white)) bgcolor(white) line(none)



*==============================================================================
* Appendix Table A4 Robustness Check Using Panel Respondents Who Participated in Both Surveys
*==============================================================================
eststo clear
* Models 1 and 2
foreach y of var vote_yoon_w1 vote_lee_w1  {

local cv1 "q203  dem_satis_w1_re support_kukhim support_etc support_no ideology_w1 pledge_w1 q24 pol_interest_w1 q195 education male age_2 age_3 age_4 age_5  p_gyonggi p_chungchung p_jeonlla p_geongnam p_geongbuk p_gangwonjeju   " 

logit `y' populism10_irt   `cv1'  , cluster(q5)
eststo 
}


foreach y of var vote_yoon_w1 vote_lee_w1  {

local cv1 "q203 dem_satis_w1_re  support_kukhim support_etc support_no ideology_w1 pledge_w1 q24 pol_interest_w1 q195 education male age_2 age_3 age_4 age_5   p_gyonggi p_chungchung p_jeonlla p_geongnam p_geongbuk p_gangwonjeju  " 

logit `y' populism10_irt  `cv1'  if w3_q1~=. , cluster(q5)
eststo 
}


esttab , b(%12.3fc) se scalars("ll Log lik." ) pr2 nogap label star(* 0.05 ** 0.01 *** 0.001)


*==============================================================================
* Table A5 Moderating Effects of Economic and Political Conditions: Full Table 
*==============================================================================
eststo clear
foreach y of var vote_yoon_w3 vote_lee_w3  {
local cv2 "support_kukhim_w3_re support_etc_w3_re support_no_w3_re ideology_w3 pledge_w3  w3_q109 pol_interest_w3 q195 education male age_2 age_3 age_4 age_5 p_gyonggi p_chungchung p_jeonlla p_geongnam p_geongbuk p_gangwonjeju  " 

logit `y' c.populism10_irt##c.q203 c.dem_satis_w3_re##c.populism10_irt   `cv2' ,  cluster(q5)
eststo 
}

esttab , b(%12.3fc) se scalars("ll Log lik." ) pr2 nogap label star(* 0.05 ** 0.01 *** 0.001)

eststo clear